package com.itcam.list_.map_;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * Author:Cammy.Wu
 * Date:2024-06-06
 * Description:Map三种遍历方式
 */

public class MapDemo03 {
    public static void main(String[] args) {
        HashMap<String, String> hashMap = new HashMap<>();
        hashMap.put("cammy", "shanwei");
        hashMap.put("jerry", "guanzhou");
        hashMap.put("tim", "guanzhou");

        method1(hashMap);
        System.out.println("----------------------------------------");
        method2(hashMap);
        System.out.println("----------------------------------------");
        method3(hashMap);
        // extracted adj.萃取的；引出的
    }

    private static void method1(HashMap<String, String> hashMap) {
        // 1.获取到所有的键
        Set<String> keySet = hashMap.keySet();
        // 2.遍历set集合，获取每一个键
        for (String key : keySet) {
            // 3.调用map集合的get方法，取出对应的值
            String value = hashMap.get(key);
            System.out.println(key + "————" + value);
        }
    }

    private static void method2(HashMap<String, String> hashMap) {
        // 1.调用HashMap的entrySet方法获取所有的键值对对象
        Set<Map.Entry<String, String>> entrySet = hashMap.entrySet(); // 得到的是Set集合
        // 2.遍历Set集合，获取每一个键值对
        for (Map.Entry<String, String> entry : entrySet) {
            // 3.通过键值对对象的getKey()和getValue()获取键和值
            System.out.println(entry.getKey() + "————" + entry.getValue());
        }
    }

    private static void method3(HashMap<String, String> hashMap) {
        // 通过foreach遍历
        hashMap.forEach((key, value) -> System.out.println(key + "————" + value)); // lambda表达式
    }
}
